<?php
/*
===============================================================================
	Controla las funciones nesesarias para que el catalogo de cursos pueda
	consultar, insertar , modificar y eliminar registros.
===============================================================================
 */
class Cursos extends CI_Controller
{
	const TITULO = 'Cursos';
	/*
	====================
	Index

	Carga todos los registros de cursos.
	Establece la configuracion de paginacion.
	====================
	*/
	function Index()
	{
		$datos['contenido'] 	 = 'Cursos_View';
		$datos['titulo']    	 = self::TITULO;
		$datos['registros'] 	 = $this->Cursos_Model->ObtenerTodosTabla();
		//Config Paginacion
		$config['total_rows'] 	 = $this->Cursos_Model->ContarRegistros();
		$config['base_url'] 	 = site_url("Cursos/Index");
		$config['per_page'] 	 = 20;
		$config['num_links'] 	 = 5;
		$this->pagination->initialize( $config );
		$this->load->view( '/includes/template' , $datos );
	}

	/*
	====================
	BuscarCursos

	Carga los registros con segun el tipo de busqueda especificada y la cadena de texto introducida
	====================
	*/
	function BuscarCursos()
	{
		$datos['contenido'] = 'Cursos_View';
		$datos['titulo']    = self::TITULO;
		$tipo 	= $this->input->post('tipoBusqueda');
		$texto  = $this->input->post('filtro');
		if ( $tipo != '' && $texto != '' ) {
			switch ($tipo) {
				case 'maestro':
					$datos['registros'] = $this->Cursos_Model->BuscarPorMaestro($texto);
					break;
				case 'grupo':
					$datos['registros'] = $this->Cursos_Model->BuscarPorGrupo($texto);
					break;
				case 'materia':
					$datos['registros'] = $this->Cursos_Model->BuscarPorMateria($texto);
					break;
				case 'periodo':
					$datos['registros'] = $this->Cursos_Model->BuscarPorPeriodo($texto);
					break;
				default:
					break;
			}
		} else {
			$this->session->set_flashdata('aviso','FALSE');
			$this->session->set_flashdata('avisoText','Ambos campos de busqueda son requeridos(tipoBusqueda/Texto)');
			redirect('Cursos');
		}
		//Config Paginacion
		$config['total_rows'] 	 = COUNT($datos['registros']);
		$config['base_url'] 	 = site_url("Cursos/Index");
		$config['per_page'] 	 = 20;
		$config['num_links'] 	 = 5;
		$this->pagination->initialize( $config );
		$this->load->view( '/includes/template' , $datos );
	}

	/*
	====================
	AgregarCurso

	Captura los valores introducidos en el formulario, y forma un arreglo con los valores.
	Este se manda a guardar, se establece un aviso al usuario dependiendo de la respuesta.
	(Exito / Error)
	====================
	*/
	function AgregarCurso()
	{
		$maestro    = $this->input->post('maestro');
		$grupo      = $this->input->post('grupo');
		$materia    = $this->input->post('materia');
		$periodo    = $this->input->post('periodo');
		if ( $maestro != '' && $grupo != '' && $materia != '' && $periodo != '' ) {
			$datosCurso = array(
				'maestro'         => $maestro,
				'grupo'           => strtoupper($grupo),
				'materia'         => strtoupper($materia),
				'id_ciclo'        => $periodo,
				'periodo'         => $periodo,
				'fecha_insertado' => "CURDATE()",
				'presencial'      => '0',
				);
			$res = $this->Cursos_Model->AgregarRegistrosCursos($datosCurso);
			if ( $res == 1 ) {
				$this->session->set_flashdata('aviso', 'TRUE');
				$this->session->set_flashdata('avisoText', 'Registro guardado.');
				redirect('Cursos');
			} else {
				$this->session->set_flashdata('aviso', 'FALSE');
				$this->session->set_flashdata('avisoText', 'Favor de intentar de nuevo');
				redirect('Cursos');
			}
		} else {
			$this->session->set_flashdata('aviso', 'FALSE');
			$this->session->set_flashdata('avisoText', 'Favor de intentar de nuevo, con todos los campos requeridos');
			redirect('Cursos');
		}
	}

	/*
	====================
	ActualizarCurso

	Toma los 5 parametros nesesarios, verfica que contengan algun valor,
	convierte el nombre de grupo y materia a mayusculas y manda a actualizar.
	Establece una aviso, si es exitoso.
	====================
	*/
	function ActualizarCurso()
	{
		$curso 		= $this->input->post('curso');
		$maestro    = $this->input->post('maestro');
		$grupo      = $this->input->post('grupo');
		$materia    = $this->input->post('materia');
		$periodo    = $this->input->post('periodo');
		if ( $curso != '' && $maestro != '' && $grupo != '' && $materia != '' && $periodo != '' ) {
			$datosCurso = array(
				'curso'   => $curso ,
				'maestro' => $maestro,
				'grupo'   => strtoupper($grupo),
				'materia' => strtoupper($materia),
				'periodo' => $periodo,
				);
			$res = $this->Cursos_Model->ActualizarRegistroCurso($datosCurso);
			if ( $res == 1 ) {
				$this->session->set_flashdata('aviso', 'TRUE');
				$this->session->set_flashdata('avisoText', 'Registro actualizado.');
				redirect('Cursos');
			} else {
				$this->session->set_flashdata('aviso', 'FALSE');
				$this->session->set_flashdata('avisoText', 'Favor de intentar de nuevo sin ningun campo vacio.');
				redirect('Cursos');
			}
		} else {
			$this->session->set_flashdata('aviso', 'FALSE');
			$this->session->set_flashdata('avisoText', 'Favor de intentar de nuevo sin ningun campo vacio.');
			redirect('Cursos');
		}
	}

	/*
	====================
	EliminarCurso

	Toma el tercer segmento del uri, debido a que la imagen direcciona y manda la matricula por GET.
	Ejemplo http://example.com/index.php/primer/segundo/tercer/
	Con la matricula como identificador, manda el registro ese a eliminar de la BD.
	====================
	*/
	function EliminarCurso()
	{
		$curso = $this->uri->segment(3);
		$res = $this->Cursos_Model->EliminarRegistro($curso);
		if( $res == 1 ){
			$this->session->set_flashdata('aviso', 'TRUE');
			$this->session->set_flashdata('avisoText', 'Registro eliminado.');
		}else{
			$this->session->set_flashdata('aviso', 'FALSE');
			$this->session->set_flashdata('avisoText', 'Es posible que el registro ya no exista.');
		}
		redirect('Cursos');
	}
}
?>